iT邦幫忙

2022 iThome 鐵人賽

DAY 24
0
Software Development

燃燒大三的成果發表系列 第 24

燃燒大三的成果發表第二十四天 - docker compose-up

  • 分享至 

  • xImage
  •  

昨日我們將flask打包成image成功在容器中run起來,今天我要來分享的是,我想要將redis & celery & flask這三個服務都在容器中run起來,可是只打包成一個image而不是三個,這時候我們就可以使用compose。

compose是用yml檔所寫成,而yml只是YAML檔案的副檔名,YAML這裡就不多做介紹,我們新增一個docker-compose.yml的檔案,接下來馬上來看一下docker-compose.yml的內容。

# docker-compose.yml
version: '3.8'
services:
  web:
    image: flask
    container_name: web
    ports:
      - 5000:5000
    command: gunicorn --bind 0.0.0.0:5000 app:app --preload
    environment:
      - CELERY_BROKER_URL=redis://redis:6379/0
      - CELERY_RESULT_BACKEND=redis://redis:6379/0
    depends_on:
      - redis

  worker:
    build: .
    container_name: 2022ithome_env_web_worker
    command: celery --app app.celery worker --loglevel=info
    environment:
      - CELERY_BROKER_URL=redis://redis:6379/0
      - CELERY_RESULT_BACKEND=redis://redis:6379/0
    depends_on:
      - web
      - redis

  redis:
    image: redis
    ports:
      - 6379:6379
    container_name: docker_composer_redis

基本上docker-compose跟dockerfile內容的指令大同小異,當然還有更多的設定,這裡我簡單說明我docker-compose的內容。首先用version決定docker-compose的版本,web這個服務使用flask這個image run container,也就是我們昨天build的image,然後設定容器名稱叫「web」以及容器對外的port號,下達容器執行的命令,最後設定依賴服務的優先順序,後面兩個服務也跟第一個的類似,接著我要來分享實作的畫面。

下達docker-compose up之後,可以看到正在運行我們在yml檔所撰寫的內容。
build 當前目錄底下dockerfile

創建並運行容器

接著我們可以像昨天一樣開啟網頁,然後像之前一樣進行測試,這個時候我們就能看到,訊息的更新



上一篇
燃燒大三的成果發表第二十三天 - dockerfile
下一篇
燃燒大三的成果發表第二十五天 - git(一)
系列文
燃燒大三的成果發表30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言